package com.sky.common.utils;

import java.math.BigDecimal;

/**
 * 数字工具类
 */
public class NumberUtil {

    /**
     * 四舍五入浮点数
     * @param value 浮点数
     * @param n 保留多少位小数
     * @return 处理后的浮点数
     */
    public static double round(double value,int n) {
        long temp = Math.round(value * Math.pow(10,n));
        return (double) temp / Math.pow(10,n);
    }

    /**
     * 把字符串解析为整形
     * @param str 字符串
     * @return 整数
     */
    public static int  parseInt(String str){
        return Integer.parseInt(str.trim());
    }

    /**
     * 把字符串解析为浮点数
     * @param str 字符串
     * @return 浮点数
     */
    public static double parseDouble(String str){
        return Double.parseDouble(str.trim());
    }

    /**
     * 把浮点数四舍五入后转换为十进制小数
     * @param value 浮点数
     * @param n 四舍五入的位数
     * @return  十进制小数
     */
    public static BigDecimal toDecimal(double value, int n){
        return BigDecimal.valueOf(value).setScale(n, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 把字符串转换为十进制小数
     * @param str 字符串
     * @return 十进制小数
     */
    public static BigDecimal toDecimal(String str){
        try {
            return new BigDecimal(str.trim());
        }catch (Exception e){
            return null;
        }
    }

    /**
     * 判断是否有效
     * @param d 浮点数
     * @return 是否有效
     */
    public static boolean isValid(Double d){
        return d!=null && !d.isNaN() && !d.isInfinite();
    }

}
